На днях в
Московский зоопарк прибыли новые жильцы – целых n канареек. Пока бедные птенцы томятся в неудобных временных
контейнерах, в зале заседаний зоопарка на Совете орнитологов решается их
судьба. А именно, ученым предстоит решить, как лучше всего распределить n канареек по имеющимся в зоопарке k клеткам так, чтобы при этом ни одна
клетка не пустовала. Поскольку главным критерием при размещении птиц является
комфорт, орнитологов в первую очередь интересует, сколько канареек окажется в
самой заполненной клетке (то есть в клетке с максимальным числом канареек).
Для начала, Вам,
как главному (и, как это ни печально, единственному) программисту зоопарка,
поручили оценить эту величину, то есть найти, какое минимально и максимально
возможное количество птиц может оказаться в самой заполненной клетке при
условии, что ни одна клетка не останется пустой.
Вход. Два натуральных числа: количество канареек n и количество клеток k (1 ≤ k ≤ n ≤ 109).
Выход. Выведите два
натуральных числа: минимально и максимально возможное количество канареек в
самой заполненной клетке.
Пример
входа |
Пример
выхода |
7 4 |
2 4 |
элементарная
задача
Анализ алгоритма
Для того чтобы в
самой заполненной клетке было наименьшее количество канареек, их следует
стараться расселять поровну. То есть сначала в каждую клетку посадить по канареек. А оставшиеся
n – * k канареек по
одной подселить в n – * k клеток. Тогда
минимально возможное количество канареек в самой заполненной клетке составит = .
Для того чтобы в
самой заполненной клетке было наибольшее количество канареек, в каждую клетку
кроме одной следует поселить одну канарейку. Остальные n – k + 1 канареек
следует поселить в оставшуюся клетку.
Пример
Рассмотрим
первый тест, где n = 7, k = 4. Минимально возможное количество
канареек в самой заполненной клетке равно = 2. В трех клетках
находится по 2 канарейки, в четвертой одна.
Максимально
возможное количество канареек равно 7 – 4 + 1 = 4. В трех клетках находится по
одной канарейке, в четвертой 4 (все остальные).
Реализация алгоритма
Читаем входные
данные. Вычисляем искомые значения и выводим их.
scanf("%d %d",&n,&k);
min = (n + k -
1) / k;
max = n - k + 1;
printf("%d %d\n",min,max);
Java реализация
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
int n = con.nextInt();
int k = con.nextInt();
int min = (n + k - 1) /
k;
int max = n - k + 1;
System.out.println(min + " " + max);
}
}
Python реализация
n, k = map(int,input().split())
min = (n + k - 1) // k
max = n - k + 1
print(min,max);